
/*leetcode 179
Given a list of non-negative integers nums, arrange them such that they form the largest number.

Note: The result may be very large, so you need to return a string instead of an integer.
Example 1:

Input: nums = [10,2]
Output: "210"
Example 2:

Input: nums = [3,30,34,5,9]
Output: "9534330"
Example 3:

Input: nums = [1]
Output: "1"
Example 4:

Input: nums = [10]
Output: "10"

Constraints:

1 <= nums.length <= 100
0 <= nums[i] <= 109

*/

#include <iostream>
#include <vector>
#include <algorithm>
class Solution {
public:
    string largestNumber(vector<int>& nums) {
        vector<string> data;
        for(auto& c : nums){
            data.emplace_back(to_string(c));
        }

        //使用lamba表达式
        sort(data.begin(), data.end(), [](auto x, auto y){
            return x + y > y + x;
        });
        string res;
        for (auto b : data){
            res += b;
        }
        if(res[0] == '0'){
            return "0";
        }
        return res;
    }
};

//Accepted